package com.hns.frame.util;

import java.io.Serializable;

import javax.persistence.Table;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanWrapperImpl;

import com.hns.can.common.entity.BaseEntity;

/**
 * Entity工具类,采用静态块加载，所有继承于BaseEntity的子类，的属性描述。
 * @author:Fisher
 * @version Revision 1.0.0
 * @email:zhuangcaijin@126.com
 * @see:
 * @创建日期：2015-10-25
 */
public class EntityUtil {

	/**
	 * 获取 实体类 表名
	 * @param entityClass  实体类
	 * @return
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 * @创建日期:2015-10-25
	 */
	public static <Entity extends BaseEntity> String getTableName(Class<Entity> entityClass) {
		if (entityClass.isAnnotationPresent(Table.class)) {
			return entityClass.getAnnotation(Table.class).name();
		} else {
			return null;
		}
	}

	/**
	 * 根据 字段名 获取 字段值
	 * @param entity
	 * @param fieldName
	 * @return 
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	public static <Entity extends BaseEntity> Serializable getFieldValueByFieldName(Entity entity, String fieldName) {
		if (!StringUtils.isEmpty(fieldName)) {
			return (Serializable) new BeanWrapperImpl(entity).getPropertyValue(fieldName);
		} else {
			return null;
		}
	}

	/**
	 * 根据 字段名 设置 字段值
	 * 
	 * @param obj
	 * @param fieldName
	 * @return
	 */
	public static <Entity extends BaseEntity> void setFieldValueByFieldName(Entity entity, String fieldName,
			Object value) {
		if (!StringUtils.isEmpty(fieldName))
			new BeanWrapperImpl(entity).setPropertyValue(fieldName, value);
	}
}
